//导入请求js
import {
  request
} from '../../request/index.js'
import regeneratorRuntime from '../../lib/runtime/runtime';
// pages/goods_list/index.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    tabs: [{
        id: 0,
        name: '综合',
        isActive: true
      },
      {
        id: 1,
        name: '销量',
        isActive: false
      },
      {
        id: 2,
        name: '价格',
        isActive: false
      },
    ],
    goodsList: [],
    //数据总页数
    pagesNum: 0,
    //价格降序后的数组
    sortByPrice: []
  },
  //接口要的参数
  QueryParams: {
    query: "",
    cid: "",
    pagenum: 1,
    pagesize: 10
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log(options)
    this.QueryParams.cid = options.cid || ""
    this.QueryParams.query = options.query || "";
    //获取商品列表
    this.getGoodsItems()
  },
  //tab栏的切换
  changeTab(e) {
    console.log(e)
    const {
      index
    } = e.detail
    //深拷贝tabs
    let tabs = JSON.parse(JSON.stringify(this.data.tabs))
    //遍历数组
    tabs.forEach((item, i) => i === index ? item.isActive = true : item.isActive = false)
    this.setData({
      tabs
    })
  },
  //获取商品列表数据
  async getGoodsItems() {
    const res = await request({
      url: "/goods/search",
      data: this.QueryParams
    })
    console.log(res)
    //计算总页数
    const pagesNum = Math.ceil(res.total / this.QueryParams.pagesize)
    console.log(pagesNum)
    this.setData({
      //因为下拉之后先前的数据要保留，因此不能直接赋值，要通过数据拼接
      goodsList: [...this.data.goodsList, ...res.goods],
      pagesNum
    })
    //按价格降序排列
    const {
      goodsList
    } = this.data
    goodsList.sort(compare('goods_price'))

    function compare(props) {
      return function (a, b) {
        let value1 = a[props]
        let value2 = b[props]
        return value2 - value1
      }
    }
    this.setData({
      sortByPrice: goodsList
    })
  },

  //页面上滑，触底滚动事件
  onReachBottom() {
    /*
      1.判断是否有下一页数据
        1.1 获取总页数
        计算方式：总页数 = Math.ceil(总条数 / 页面容量（pageSize）)
        1.2 
        获取当前页面this.QueryParams.pagenum
        1.3判断一下 当前的页码是否大于等于总页数
          if(this.QueryParams,pagenum >= 总页数)
      2.假如没有下一页 弹出一个提示
      3.假如有下一页数据 让当前页++ this.QueryParams.pagenum++
      在发起请求
      this.getGoodsList()
    4.数据请求回来  要对data中的数组 进行 拼接 而不是全部替换！！！

    */
    if (this.QueryParams.pagenum >= this.data.pagesNum) {
      console.log('没有下一页数据了')
      wx.showToast({
        title: '我是有底线的！',
        icon: 'none'
      })
    } else {
      this.QueryParams.pagenum++
      // console.log('还有下一页数据')
      //重新获取商品列表数据
      this.getGoodsItems()
    }
  },
  //下拉刷新触发事件
  onPullDownRefresh() {
    wx.showLoading({
      title: '加载中',
      duration: 1000,
      mask: true
    });
    // console.log(11)
    //1.重置数组
    this.setData({
      goodsList: []
    })
    //2.把当前页面重置为1
    this.QueryParams.pagenum = 1
    //3.重新发起商品获取
    setTimeout(() => {
      this.getGoodsItems()
      wx.stopPullDownRefresh() //停止下拉刷新
      wx.hideLoading();
    }, 1000)
  }
})